
/**
反向洗牌, 判断吸完毕以后当中的错误 是否 大于当前层所能容纳的最大错误.
**/
#include <bits/stdc++.h>
using namespace std;

int R[11][52];      // 存放正确的10次洗牌结果

void shuffle()      // 正向洗十次牌
{
    for(int i = 0; i < 52; ++i) R[0][i] = i;
    for(int i = 1; i < 11; ++i)
    {
        int k = 0;
        for(int j = 1; j < 52; j += 2) R[i][j] = R[i - 1][k++];     // 前一半放偶数位
        for(int j = 0; j < 52; j += 2) R[i][j] = R[i - 1][k++];     // 后一半放奇数位
    }
}

// 比较第i次正确洗牌 和 a 的差异数量
int compare(int i, int a[])
{
    int ret = 0;
    for(int j = 0; j < 52; ++j)
    {
        if(a[j] != R[i][j]) ret += 1;
    }
    return ret;
}

// 反向洗牌, 将a反向洗牌到b[]当中
void re_shuffle(int a[], int b[])
{
    
}

// 判断第i次洗牌的正确 结果 和 b[] 的差异
int chayi(int i, int b[])
{
    // for(int i = 0; i < )
}

// 在一个解答树当中寻找到一个路径后, 剩余递归就不用管了
bool dfs()
{

}

int main()
{
#ifdef LOCAL
    freopen("ALGO-209.in", "r", stdin);
#endif
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    shuffle();
    return 0;
}